_gtk_icon_helper_draw: get style earlier
authorDaniel Drake <drake@endlessm.com>
Mon, 26 Sep 2016 19:18:59 +0000 (13:18 -0600)
committerCosimo Cecchi <cosimo@endlessm.com>
Mon, 26 Sep 2016 21:23:51 +0000 (14:23 -0700)
After checking for rendered_surface, the call to gtk_css_node_get_style
can invalidate the style and result in rendered_surface being set to
NULL. This was result in some icon views appearing blank on
Endless OS on armv7hl, and this error:

Gtk-CRITICAL **: gtk_css_style_render_icon_surface: assertion 'surface != NULL' failed

Call gtk_css_node_get_style earlier to ensure we always pass a valid
surface to gtk_css_style_render_icon_surface.

https://bugzilla.gnome.org/show_bug.cgi?id=765649
https://phabricator.endlessm.com/T13524

gtk/gtkiconhelper.c

index b8737e7aa42b39bb672741eb2f0ee81d98acbd7f..7ef33ae300e61b38af697d16b24f556f2be7d83c 100644 (file)
@@ -892,11 +892,12 @@ _gtk_icon_helper_draw (GtkIconHelper *self,
                        gdouble x,
                        gdouble y)
 {
+  GtkCssStyle *style = gtk_css_node_get_style (gtk_css_gadget_get_node (GTK_CSS_GADGET (self)));
   gtk_icon_helper_ensure_surface (self);
 
   if (self->priv->rendered_surface != NULL)
     {
-      gtk_css_style_render_icon_surface (gtk_css_node_get_style (gtk_css_gadget_get_node (GTK_CSS_GADGET (self))),
+      gtk_css_style_render_icon_surface (style,
                                          cr,
                                          self->priv->rendered_surface,
                                          x, y);